import type { FormItemRule } from 'naive-ui';
import i18n from '@/i18n';

const { t } = i18n.global;

/** 邮箱验证 */
export function validateEmail(rule: FormItemRule, value: string) {
	const isEmail = v => /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(v);
	if (!value) {
		return new Error(t('msg.input'));
	} else if (!isEmail(value)) {
		return new Error(t('msg.emailError'));
	}
	return true;
}

/** 数组必填验证 */
export function validateArrRequired(rule, value) {
	return value.length > 0;
}

/** 重复验证 --值为空或完全一样 返回true
 * @param rule
 * @param value 检查的值
 * @param checkValue 要对比的值
 */
export function validateRepeat(rule: FormItemRule, value, checkValue): boolean {
	return value ? checkValue === value : true;
}

/** ip地址验证 */
export function validateIPv4Address(rule: FormItemRule, value: string) {
	if (!value) {
		return true;
	}
	// 正则表达式匹配IPv4地址
	const ipv4Regex = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
	// 验证IP地址是否符合正则表达式模式
	if (!ipv4Regex.test(value)) {
		return new Error(t('msg.ipError'));
	}
	// 分解IP地址并验证每个部分的值是否在0-255之间
	const parts = value.split('.');
	for (let i = 0; i < parts.length; i++) {
		const num = parseInt(parts[i]);
		if (num < 0 || num > 255) {
			return new Error(t('msg.ipError'));
		}
	}
	return true;
}
